第三步:添加权限

双击“AndroidManifest.xml”,打开工程配置文件,添加以下几条必备权限:

<!--允许程序访问网络连接,可能产生GPRS流量-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序获取网络信息状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许程序获取当前WIFI接入的状态以及WLAN特点信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序写入外部存储-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许程序访问电话状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允许程序改变WIFI状态-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--允许程序接收卫星定位信息-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!--允许程序挂载、反挂载外部文件系统-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" />
<!--允许程序访问摄像头拍照-->
<uses-permission android:name="android.permission.CAMERA "/>
图:添加权限

Android 6.0及以上操作系统在原有AndroidManifest.xml声明权限的基础上新增运行时权限动态检测,定位等权限也包含在其中。申请动态权限,需在“build.gradle”、"MainActivity.java"文件中,按如下步骤添加代码:

(1)在“build.gradle”的dependencies中添加依赖。

implementation 'pub.devrel:easypermissions:3.0.0'
图:添加权限依赖库

(2)在"MainActivity.java"中引用权限相关包。

import android.Manifest;
import android.os.Build;
import android.os.Bundle;
import pub.devrel.easypermissions.EasyPermissions;
图:引入权限相关包

(3)在 "MainActivity.java"的“onCreate”中,添加“requestPermissions();”。

(4)在 "MainActivity.java"添加如下代码:

/**
* 需要申请的权限数组
*/
protected String[] needPermissions = {
    Manifest.permission.WRITE_EXTERNAL_STORAGE,
    Manifest.permission.ACCESS_FINE_LOCATION,
    Manifest.permission.READ_PHONE_STATE,
    Manifest.permission.ACCESS_WIFI_STATE,
    Manifest.permission.CAMERA,
    Manifest.permission.ACCESS_NETWORK_STATE,
    Manifest.permission.CHANGE_WIFI_STATE,
};
/**
* 检测权限
* return true:已经获取权限
* return false: 未获取权限,主动请求权限
*/
public boolean checkPermissions(String[] permissions) {
    return EasyPermissions.hasPermissions(this, permissions);
}
/**
* 申请动态权限
*/
private void requestPermissions() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return;
    }
    if (!checkPermissions(needPermissions)) {
        EasyPermissions.requestPermissions(
            this,
            "为了应用的正常使用,请允许以下权限。",
            0,
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.READ_PHONE_STATE,
            Manifest.permission.ACCESS_WIFI_STATE,
            Manifest.permission.CAMERA,
            Manifest.permission.ACCESS_NETWORK_STATE,
            Manifest.permission.CHANGE_WIFI_STATE);
            //没有授权,编写申请权限代码
    } else {
        //已经授权,执行操作代码
    }
}
/**
* 回调函数
*/
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    // Forward results to EasyPermissions
    EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
图:添加权限代码

以下是可选代码。

在“AndroidManifest.xml”中,承载 MapControl 的 Activity 项目中添加 Activity 配置,让地图界面在横竖屏切换时不再重复调用 onCreate。代码如下:

android:configChanges="keyboardHidden|orientation|screenSize"

在 AndroidManifest.xml的manifest节点下添加以下配置:

<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"/>
图:添加Activity设置和多格式屏幕设置